uniform vec4 color;
uniform vec4 glowColor;
uniform float glowPower;
uniform float taperPower;

czm_material czm_getMaterial(czm_materialInput materialInput){
  
  czm_material material = czm_getDefaultMaterial(materialInput);

  vec2 st = materialInput.st;
  float glow = glowPower * ( 1.0 / abs(st.t - 0.5) - 2.0 );

  if (taperPower <= 0.99999) {
    glow *= min( 1.0, taperPower * ( 2.0 / ( 1.0 - st.s ) - 2.0 ) );
  }

  vec4 fragColor;
  if(glow > 2.0){
    fragColor.rgb = color.rgb;
  }else{
    fragColor.rgb = max(vec3(glow - 1.0 + glowColor.rgb), glowColor.rgb);
  }
  fragColor.a = min(1.0, glow) * glowColor.a;
  fragColor = czm_gammaCorrect(fragColor);

  material.emission = fragColor.rgb;
  material.alpha = fragColor.a;

  return material;
}
